class EventSource(object):
    '''
    Default implementation of an Event source. New modules in the sources
    package can subclass this to use the default implementation.
    '''

    def get_events(self):
        '''
        Raise NotImplemented. Subclasses should override this to return an
        iterable of Event instances, or raise NoEventsFound.
        '''
        raise NotImplemented

class NoEventsFound(Exception):
    '''
    An event source should raise this when it can find no events.
    '''
    pass

